{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from lxml.html import fromstring\n",
    "import time\n",
    "from random import random\n",
    "import json\n",
    "import math\n",
    "import os\n",
    "from requests_html import HTMLSession"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\anaconda\\lib\\site-packages\\ipykernel_launcher.py:19: DeprecationWarning: use options instead of chrome_options\n"
     ]
    }
   ],
   "source": [
    "from selenium import webdriver\n",
    "from selenium.webdriver.common.desired_capabilities import DesiredCapabilities\n",
    "\n",
    "# selenium ---> webdriver-----> ChromeOptions---->\n",
    "\n",
    "opts = webdriver.ChromeOptions()\n",
    "\n",
    "opts.add_argument('--no-sandbox')#解决DevToolsActivePort文件不存在的报错\n",
    "opts.add_argument('window-size=1920x3000') #指定浏览器分辨率\n",
    "opts.add_argument('--disable-gpu') #谷歌文档提到需要加上一这个属性来规避bug\n",
    "opts.add_argument('--hide-scrollbars') #隐藏滚动条, 应对些特殊页面\n",
    "#opts.add_argument('eager')\n",
    "# opts.page_load_strategy = 'eager'\n",
    "\n",
    "\n",
    "opts.binary_location = r\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\" #Zhichao\n",
    "# opts.binary_location = r\"H:\\IronPortable\\App\\Iron\\chrome.exe\" #Hanteng\n",
    "\n",
    "driver = webdriver.Chrome( chrome_options = opts) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "url = 'http://data.un.org/Search.aspx?q=education'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "driver.get(url)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 一个页面中的20个download\n",
    "                                     \n",
    "down = (('//*[@id=\"ctl00_main_results_rptResults_ctl00_act_download\"]/a[2]'), \\\n",
    "        ('//*[@id=\"ctl00_main_results_rptResults_ctl01_act_download\"]/a[2]'), \\\n",
    "        ('//*[@id=\"ctl00_main_results_rptResults_ctl02_act_download\"]/a[2]'), \\\n",
    "        ('//*[@id=\"ctl00_main_results_rptResults_ctl03_act_download\"]/a[2]'), \\\n",
    "        ('//*[@id=\"ctl00_main_results_rptResults_ctl04_act_download\"]/a[2]'), \\\n",
    "        ('//*[@id=\"ctl00_main_results_rptResults_ctl05_act_download\"]/a[2]'), \\\n",
    "        ('//*[@id=\"ctl00_main_results_rptResults_ctl06_act_download\"]/a[2]'), \\\n",
    "        ('//*[@id=\"ctl00_main_results_rptResults_ctl07_act_download\"]/a[2]'), \\\n",
    "        ('//*[@id=\"ctl00_main_results_rptResults_ctl08_act_download\"]/a[2]'), \\\n",
    "        ('//*[@id=\"ctl00_main_results_rptResults_ctl09_act_download\"]/a[2]'), \\\n",
    "        ('//*[@id=\"ctl00_main_results_rptResults_ctl10_act_download\"]/a[2]'), \\\n",
    "        ('//*[@id=\"ctl00_main_results_rptResults_ctl11_act_download\"]/a[2]'), \\\n",
    "        ('//*[@id=\"ctl00_main_results_rptResults_ctl12_act_download\"]/a[2]'), \\\n",
    "        ('//*[@id=\"ctl00_main_results_rptResults_ctl13_act_download\"]/a[2]'), \\\n",
    "        ('//*[@id=\"ctl00_main_results_rptResults_ctl14_act_download\"]/a[2]'), \\\n",
    "        ('//*[@id=\"ctl00_main_results_rptResults_ctl15_act_download\"]/a[2]'), \\\n",
    "        ('//*[@id=\"ctl00_main_results_rptResults_ctl16_act_download\"]/a[2]'), \\\n",
    "        ('//*[@id=\"ctl00_main_results_rptResults_ctl17_act_download\"]/a[2]'), \\\n",
    "        ('//*[@id=\"ctl00_main_results_rptResults_ctl18_act_download\"]/a[2]'), \\\n",
    "        ('//*[@id=\"ctl00_main_results_rptResults_ctl19_act_download\"]/a[2]'), \\\n",
    "\n",
    "       )\n",
    "  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'%%time\\n# 测试 单页面下载\\n\\nfor i in down:\\n    driver.find_element_by_xpath(i).click()\\n    time.sleep(3+4*random())     \\n    driver.find_element_by_xpath(\\'//*[@id=\"downloadCommaLink\"]\\').click()'"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\"\"\"%%time\n",
    "# 测试 单页面下载\n",
    "\n",
    "for i in down:\n",
    "    driver.find_element_by_xpath(i).click()\n",
    "    time.sleep(3+4*random())     \n",
    "    driver.find_element_by_xpath('//*[@id=\"downloadCommaLink\"]').click()\"\"\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 选择下载方式"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<selenium.webdriver.remote.webelement.WebElement (session=\"71189ac78b4557e80f3cc84f7761e64f\", element=\"9d0f7dde-082a-4683-971b-1d699f092c2c\")>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 选择下载方式                        //*[@id=\"downloadCommaLink\"]\n",
    "exl = driver.find_element_by_xpath('//*[@id=\"downloadCommaLink\"]')\n",
    "exl\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 点击下一页  //*[@id=\"ctl00_main_results_linkNext\"]/font/font"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<selenium.webdriver.remote.webelement.WebElement (session=\"71189ac78b4557e80f3cc84f7761e64f\", element=\"602ae4e8-fa2c-4991-a481-ab5a9701b6bd\")>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "next_a = driver.find_element_by_xpath('//*[@id=\"ctl00_main_results_linkNext\"]')\n",
    "\n",
    "next_a"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 获得总文件数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "224"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "session = HTMLSession()\n",
    "r = session.get( url )\n",
    "max_文章数量 = r.html.xpath ('//div[@id=\"ctl00_divSearchBar\"]/div[@class=\"Right\"]/b[2]/text()')\n",
    "max_文章数量 = ''.join(max_文章数量)\n",
    "max_文章数量 = int(max_文章数量)\n",
    "max_文章数量"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 测试 文章页面 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "12"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "max_文章页码 = math.ceil((float(max_文章数量)/20))\n",
    "max_文章页码"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 测试 下载文件夹中 文件、文件夹数量\n",
    "####  需要手动调整下载位置"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "path = r'C:\\Users\\諳\\Desktop\\数据分析\\part01_全球教育情况\\下载数据'\n",
    "dirnum = len([lists for lists in os.listdir(path) if os.path.isdir(os.path.join(path, lists))])\n",
    "filenum_try = len([lists for lists in os.listdir(path) if os.path.isfile(os.path.join(path, lists))])\n",
    "filenum_try"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 开始翻页下载数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "文件数： 0\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl00_act_download\"]/a[2]\n",
      "目前已下载文件数量: 1\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl01_act_download\"]/a[2]\n",
      "目前已下载文件数量: 2\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl02_act_download\"]/a[2]\n",
      "目前已下载文件数量: 3\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl03_act_download\"]/a[2]\n",
      "目前已下载文件数量: 4\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl04_act_download\"]/a[2]\n",
      "目前已下载文件数量: 5\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl05_act_download\"]/a[2]\n",
      "目前已下载文件数量: 6\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl06_act_download\"]/a[2]\n",
      "目前已下载文件数量: 7\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl07_act_download\"]/a[2]\n",
      "目前已下载文件数量: 8\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl08_act_download\"]/a[2]\n",
      "目前已下载文件数量: 9\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl09_act_download\"]/a[2]\n",
      "目前已下载文件数量: 10\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl10_act_download\"]/a[2]\n",
      "目前已下载文件数量: 11\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl11_act_download\"]/a[2]\n",
      "目前已下载文件数量: 12\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl12_act_download\"]/a[2]\n",
      "目前已下载文件数量: 13\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl13_act_download\"]/a[2]\n",
      "目前已下载文件数量: 14\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl14_act_download\"]/a[2]\n",
      "目前已下载文件数量: 15\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl15_act_download\"]/a[2]\n",
      "目前已下载文件数量: 16\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl16_act_download\"]/a[2]\n",
      "目前已下载文件数量: 17\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl17_act_download\"]/a[2]\n",
      "目前已下载文件数量: 18\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl18_act_download\"]/a[2]\n",
      "目前已下载文件数量: 19\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl19_act_download\"]/a[2]\n",
      "目前已下载文件数量: 20\n",
      "当前k值： 20 20\n",
      "文件数： 20\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl00_act_download\"]/a[2]\n",
      "目前已下载文件数量: 21\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl01_act_download\"]/a[2]\n",
      "目前已下载文件数量: 22\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl02_act_download\"]/a[2]\n",
      "目前已下载文件数量: 23\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl03_act_download\"]/a[2]\n",
      "目前已下载文件数量: 24\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl04_act_download\"]/a[2]\n",
      "目前已下载文件数量: 25\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl05_act_download\"]/a[2]\n",
      "目前已下载文件数量: 26\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl06_act_download\"]/a[2]\n",
      "目前已下载文件数量: 27\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl07_act_download\"]/a[2]\n",
      "目前已下载文件数量: 28\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl08_act_download\"]/a[2]\n",
      "目前已下载文件数量: 29\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl09_act_download\"]/a[2]\n",
      "目前已下载文件数量: 30\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl10_act_download\"]/a[2]\n",
      "目前已下载文件数量: 31\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl11_act_download\"]/a[2]\n",
      "目前已下载文件数量: 32\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl12_act_download\"]/a[2]\n",
      "目前已下载文件数量: 33\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl13_act_download\"]/a[2]\n",
      "目前已下载文件数量: 34\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl14_act_download\"]/a[2]\n",
      "目前已下载文件数量: 35\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl15_act_download\"]/a[2]\n",
      "目前已下载文件数量: 36\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl16_act_download\"]/a[2]\n",
      "目前已下载文件数量: 37\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl17_act_download\"]/a[2]\n",
      "目前已下载文件数量: 38\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl18_act_download\"]/a[2]\n",
      "目前已下载文件数量: 39\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl19_act_download\"]/a[2]\n",
      "目前已下载文件数量: 40\n",
      "当前k值： 40 40\n",
      "文件数： 40\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl00_act_download\"]/a[2]\n",
      "目前已下载文件数量: 41\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl01_act_download\"]/a[2]\n",
      "目前已下载文件数量: 42\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl02_act_download\"]/a[2]\n",
      "目前已下载文件数量: 43\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl03_act_download\"]/a[2]\n",
      "目前已下载文件数量: 44\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl04_act_download\"]/a[2]\n",
      "目前已下载文件数量: 45\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl05_act_download\"]/a[2]\n",
      "目前已下载文件数量: 46\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl06_act_download\"]/a[2]\n",
      "目前已下载文件数量: 47\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl07_act_download\"]/a[2]\n",
      "目前已下载文件数量: 48\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl08_act_download\"]/a[2]\n",
      "目前已下载文件数量: 49\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl09_act_download\"]/a[2]\n",
      "目前已下载文件数量: 50\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl10_act_download\"]/a[2]\n",
      "目前已下载文件数量: 51\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl11_act_download\"]/a[2]\n",
      "目前已下载文件数量: 52\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl12_act_download\"]/a[2]\n",
      "目前已下载文件数量: 53\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl13_act_download\"]/a[2]\n",
      "目前已下载文件数量: 54\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl14_act_download\"]/a[2]\n",
      "目前已下载文件数量: 55\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl15_act_download\"]/a[2]\n",
      "目前已下载文件数量: 56\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl16_act_download\"]/a[2]\n",
      "目前已下载文件数量: 57\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl17_act_download\"]/a[2]\n",
      "目前已下载文件数量: 58\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl18_act_download\"]/a[2]\n",
      "目前已下载文件数量: 59\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl19_act_download\"]/a[2]\n",
      "目前已下载文件数量: 60\n",
      "当前k值： 60 60\n",
      "文件数： 60\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl00_act_download\"]/a[2]\n",
      "目前已下载文件数量: 61\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl01_act_download\"]/a[2]\n",
      "目前已下载文件数量: 62\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl02_act_download\"]/a[2]\n",
      "目前已下载文件数量: 63\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl03_act_download\"]/a[2]\n",
      "目前已下载文件数量: 64\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl04_act_download\"]/a[2]\n",
      "目前已下载文件数量: 65\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl05_act_download\"]/a[2]\n",
      "目前已下载文件数量: 66\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl06_act_download\"]/a[2]\n",
      "目前已下载文件数量: 67\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl07_act_download\"]/a[2]\n",
      "目前已下载文件数量: 68\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl08_act_download\"]/a[2]\n",
      "目前已下载文件数量: 69\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl09_act_download\"]/a[2]\n",
      "目前已下载文件数量: 70\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl10_act_download\"]/a[2]\n",
      "目前已下载文件数量: 71\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl11_act_download\"]/a[2]\n",
      "目前已下载文件数量: 72\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl12_act_download\"]/a[2]\n",
      "目前已下载文件数量: 73\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl13_act_download\"]/a[2]\n",
      "目前已下载文件数量: 74\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl14_act_download\"]/a[2]\n",
      "目前已下载文件数量: 75\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl15_act_download\"]/a[2]\n",
      "目前已下载文件数量: 76\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl16_act_download\"]/a[2]\n",
      "目前已下载文件数量: 77\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl17_act_download\"]/a[2]\n",
      "目前已下载文件数量: 78\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl18_act_download\"]/a[2]\n",
      "目前已下载文件数量: 79\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl19_act_download\"]/a[2]\n",
      "目前已下载文件数量: 80\n",
      "当前k值： 80 80\n",
      "文件数： 80\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl00_act_download\"]/a[2]\n",
      "目前已下载文件数量: 81\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl01_act_download\"]/a[2]\n",
      "目前已下载文件数量: 82\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl02_act_download\"]/a[2]\n",
      "目前已下载文件数量: 83\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl03_act_download\"]/a[2]\n",
      "目前已下载文件数量: 84\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl04_act_download\"]/a[2]\n",
      "目前已下载文件数量: 85\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl05_act_download\"]/a[2]\n",
      "目前已下载文件数量: 86\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl06_act_download\"]/a[2]\n",
      "目前已下载文件数量: 87\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl07_act_download\"]/a[2]\n",
      "目前已下载文件数量: 88\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl08_act_download\"]/a[2]\n",
      "目前已下载文件数量: 89\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl09_act_download\"]/a[2]\n",
      "目前已下载文件数量: 90\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl10_act_download\"]/a[2]\n",
      "目前已下载文件数量: 91\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl11_act_download\"]/a[2]\n",
      "目前已下载文件数量: 92\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl12_act_download\"]/a[2]\n",
      "目前已下载文件数量: 93\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl13_act_download\"]/a[2]\n",
      "目前已下载文件数量: 94\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl14_act_download\"]/a[2]\n",
      "目前已下载文件数量: 95\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl15_act_download\"]/a[2]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "目前已下载文件数量: 96\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl16_act_download\"]/a[2]\n",
      "目前已下载文件数量: 97\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl17_act_download\"]/a[2]\n",
      "目前已下载文件数量: 98\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl18_act_download\"]/a[2]\n",
      "目前已下载文件数量: 99\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl19_act_download\"]/a[2]\n",
      "目前已下载文件数量: 100\n",
      "当前k值： 100 100\n",
      "文件数： 100\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl00_act_download\"]/a[2]\n",
      "目前已下载文件数量: 101\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl01_act_download\"]/a[2]\n",
      "目前已下载文件数量: 102\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl02_act_download\"]/a[2]\n",
      "目前已下载文件数量: 103\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl03_act_download\"]/a[2]\n",
      "目前已下载文件数量: 104\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl04_act_download\"]/a[2]\n",
      "目前已下载文件数量: 105\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl05_act_download\"]/a[2]\n",
      "目前已下载文件数量: 106\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl06_act_download\"]/a[2]\n",
      "目前已下载文件数量: 107\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl07_act_download\"]/a[2]\n",
      "目前已下载文件数量: 108\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl08_act_download\"]/a[2]\n",
      "目前已下载文件数量: 109\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl09_act_download\"]/a[2]\n",
      "目前已下载文件数量: 110\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl10_act_download\"]/a[2]\n",
      "目前已下载文件数量: 111\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl11_act_download\"]/a[2]\n",
      "目前已下载文件数量: 112\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl12_act_download\"]/a[2]\n",
      "目前已下载文件数量: 113\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl13_act_download\"]/a[2]\n",
      "目前已下载文件数量: 114\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl14_act_download\"]/a[2]\n",
      "目前已下载文件数量: 115\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl15_act_download\"]/a[2]\n",
      "目前已下载文件数量: 116\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl16_act_download\"]/a[2]\n",
      "目前已下载文件数量: 117\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl17_act_download\"]/a[2]\n",
      "目前已下载文件数量: 118\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl18_act_download\"]/a[2]\n",
      "目前已下载文件数量: 119\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl19_act_download\"]/a[2]\n",
      "目前已下载文件数量: 120\n",
      "当前k值： 120 120\n",
      "文件数： 120\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl00_act_download\"]/a[2]\n",
      "目前已下载文件数量: 121\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl01_act_download\"]/a[2]\n",
      "目前已下载文件数量: 122\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl02_act_download\"]/a[2]\n",
      "目前已下载文件数量: 123\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl03_act_download\"]/a[2]\n",
      "目前已下载文件数量: 124\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl04_act_download\"]/a[2]\n",
      "目前已下载文件数量: 125\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl05_act_download\"]/a[2]\n",
      "目前已下载文件数量: 126\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl06_act_download\"]/a[2]\n",
      "目前已下载文件数量: 127\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl07_act_download\"]/a[2]\n",
      "目前已下载文件数量: 128\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl08_act_download\"]/a[2]\n",
      "目前已下载文件数量: 129\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl09_act_download\"]/a[2]\n",
      "目前已下载文件数量: 130\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl10_act_download\"]/a[2]\n",
      "目前已下载文件数量: 131\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl11_act_download\"]/a[2]\n",
      "目前已下载文件数量: 132\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl12_act_download\"]/a[2]\n",
      "目前已下载文件数量: 133\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl13_act_download\"]/a[2]\n",
      "目前已下载文件数量: 134\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl14_act_download\"]/a[2]\n",
      "目前已下载文件数量: 135\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl15_act_download\"]/a[2]\n",
      "目前已下载文件数量: 136\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl16_act_download\"]/a[2]\n",
      "目前已下载文件数量: 137\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl17_act_download\"]/a[2]\n",
      "目前已下载文件数量: 138\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl18_act_download\"]/a[2]\n",
      "目前已下载文件数量: 139\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl19_act_download\"]/a[2]\n",
      "目前已下载文件数量: 140\n",
      "当前k值： 140 140\n",
      "文件数： 140\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl00_act_download\"]/a[2]\n",
      "目前已下载文件数量: 141\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl01_act_download\"]/a[2]\n",
      "目前已下载文件数量: 142\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl02_act_download\"]/a[2]\n",
      "目前已下载文件数量: 143\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl03_act_download\"]/a[2]\n",
      "目前已下载文件数量: 144\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl04_act_download\"]/a[2]\n",
      "目前已下载文件数量: 145\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl05_act_download\"]/a[2]\n",
      "目前已下载文件数量: 146\n",
      "正在下载： //*[@id=\"ctl00_main_results_rptResults_ctl06_act_download\"]/a[2]\n"
     ]
    },
    {
     "ename": "ElementNotInteractableException",
     "evalue": "Message: element not interactable\n  (Session info: chrome=83.0.4103.116)\n",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mElementNotInteractableException\u001b[0m           Traceback (most recent call last)",
      "\u001b[1;32m<timed exec>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n",
      "\u001b[1;32mD:\\anaconda\\lib\\site-packages\\selenium\\webdriver\\remote\\webelement.py\u001b[0m in \u001b[0;36mclick\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m     78\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mclick\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     79\u001b[0m         \u001b[1;34m\"\"\"Clicks the element.\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 80\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_execute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mCommand\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mCLICK_ELEMENT\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     81\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     82\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0msubmit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\anaconda\\lib\\site-packages\\selenium\\webdriver\\remote\\webelement.py\u001b[0m in \u001b[0;36m_execute\u001b[1;34m(self, command, params)\u001b[0m\n\u001b[0;32m    631\u001b[0m             \u001b[0mparams\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    632\u001b[0m         \u001b[0mparams\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'id'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_id\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 633\u001b[1;33m         \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_parent\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcommand\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    634\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    635\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mfind_element\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mby\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mBy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mID\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\anaconda\\lib\\site-packages\\selenium\\webdriver\\remote\\webdriver.py\u001b[0m in \u001b[0;36mexecute\u001b[1;34m(self, driver_command, params)\u001b[0m\n\u001b[0;32m    319\u001b[0m         \u001b[0mresponse\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcommand_executor\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdriver_command\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    320\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mresponse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 321\u001b[1;33m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0merror_handler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcheck_response\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresponse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    322\u001b[0m             response['value'] = self._unwrap_value(\n\u001b[0;32m    323\u001b[0m                 response.get('value', None))\n",
      "\u001b[1;32mD:\\anaconda\\lib\\site-packages\\selenium\\webdriver\\remote\\errorhandler.py\u001b[0m in \u001b[0;36mcheck_response\u001b[1;34m(self, response)\u001b[0m\n\u001b[0;32m    240\u001b[0m                 \u001b[0malert_text\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'alert'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'text'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    241\u001b[0m             \u001b[1;32mraise\u001b[0m \u001b[0mexception_class\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmessage\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mscreen\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstacktrace\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0malert_text\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 242\u001b[1;33m         \u001b[1;32mraise\u001b[0m \u001b[0mexception_class\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmessage\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mscreen\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstacktrace\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    243\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    244\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m_value_or_default\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdefault\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mElementNotInteractableException\u001b[0m: Message: element not interactable\n  (Session info: chrome=83.0.4103.116)\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "\n",
    "for k in range(20,max_文章数量,20):\n",
    "    path = r'C:\\Users\\諳\\Desktop\\数据分析\\part01_全球教育情况\\下载数据'\n",
    "    filenum = len([lists for lists in os.listdir(path) if os.path.isfile(os.path.join(path, lists))])\n",
    "    print('文件数：',filenum)\n",
    "    time.sleep(3+4*random())\n",
    "\n",
    "    for i in down:            \n",
    "        print('正在下载：',i)\n",
    "        driver.find_element_by_xpath(i).click()\n",
    "        time.sleep(3+4*random())     \n",
    "        driver.find_element_by_xpath('//*[@id=\"downloadCommaLink\"]').click()\n",
    "        time.sleep(3+4*random())\n",
    "        filenum = len([lists for lists in os.listdir(path) if os.path.isfile(os.path.join(path, lists))])\n",
    "        print('目前已下载文件数量:',filenum)       \n",
    "               \n",
    "        if k ==filenum:\n",
    "            print('当前k值：',k,filenum)\n",
    "            driver.find_element_by_xpath('//*[@id=\"ctl00_main_results_linkNext\"]').click()\n",
    "            time.sleep(5+4*random()) \n",
    "            \n",
    "\n",
    "                \n",
    "\n",
    "       "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 一键解压下载得到的压缩包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "parent_path = r'C:\\Users\\諳\\Desktop\\数据分析\\part01_全球教育情况\\下载数据'\n",
    " \n",
    "# 压缩包类型选择\n",
    "file_flag = '.zip'\n",
    " \n",
    "# 删除已解压的zip文件\n",
    "def del_old_zip(file_path):\n",
    "    os.remove(file_path)\n",
    " \n",
    " \n",
    "# 解压\n",
    "def decompress(file_path, root):\n",
    "    # 开始\n",
    "    # zipfile打开zip文件\n",
    "    z = zipfile.ZipFile(f'{file_path}', 'r')\n",
    " \n",
    "    # 解压\n",
    "    z.extractall(path=f\"{root}\")    # path为解压路径，解包后位于该路径下\n",
    " \n",
    "    # 判断是否需要重复解包\n",
    "    for names in z.namelist():\n",
    "        if names.endswith(file_flag):\n",
    "            z.close()\n",
    "            return 1\n",
    " \n",
    "    # 结束\n",
    "    z.close()\n",
    " \n",
    "    return 0\n",
    " \n",
    " \n",
    "  # 开始要先创建一个大文件夹  与压缩包名字相同，避免后期混乱和麻烦\n",
    "def start_dir_make(root, dirname):\n",
    "    os.chdir(root)\n",
    "    os.mkdir(dirname)\n",
    "    return os.path.join(root, dirname)\n",
    " \n",
    " \n",
    "  # 去除多余文件夹\n",
    "def rem_dir_extra(root, father_dir_name):\n",
    "    # 递归要注意信息的正常处理  搞不好上一个调用已经改变了东西  而下面的调用还是使用之前的数据\n",
    " \n",
    "    try:\n",
    " \n",
    "       # 判断文件夹重名  开始\n",
    "        for item in os.listdir(os.path.join(root, father_dir_name)):\n",
    " \n",
    "            # 第一步判断是不是一个文件夹，如果不是则跳过本次循环\n",
    "            if not os.path.isdir(os.path.join(root, father_dir_name, item)):\n",
    "                continue\n",
    " \n",
    "            # 判断是否要脱掉一层目录结构\n",
    "            # 文件夹名字要相同，且子目录中只有单独的一个文件夹\n",
    "            if item == father_dir_name and len(\n",
    "                    os.listdir(os.path.join(root, father_dir_name))) == 1:\n",
    " \n",
    "                # 改变工作目录\n",
    "                os.chdir(root)\n",
    "                 \n",
    "                # 将无用文件夹重命名，因为直接移动会有重名错误\n",
    "                os.rename(father_dir_name, father_dir_name + '-old')\n",
    "                 \n",
    "                # 移动文件后删除空文件夹\n",
    "                shutil.move(os.path.join(root, father_dir_name + '-old', item), os.path.join(root))\n",
    "                os.rmdir(os.path.join(root, father_dir_name + '-old'))\n",
    " \n",
    "                # 将去掉一层目录结构后的文件夹继续作为父本递归处理下去\n",
    "                rem_dir_extra(root, item)\n",
    " \n",
    "            else:\n",
    " \n",
    "                # 处理那些不满足上面条件的文件夹\n",
    "                rem_dir_extra(os.path.join(root, father_dir_name), item)\n",
    " \n",
    "    except Exception as e:\n",
    " \n",
    "        # 打印错误信息\n",
    "        print(\"清除文件夹出错\" + str(e))\n",
    " \n",
    "\n",
    " if __name__ == '__main__':\n",
    " \n",
    "    flag = 1\n",
    " \n",
    "    while flag:\n",
    " \n",
    "        #  循环遍历文件夹\n",
    "        for root, dirs, files in os.walk(parent_path):\n",
    " \n",
    "            # 读取文件名\n",
    "            for name in files:\n",
    " \n",
    "                if name.endswith(file_flag):\n",
    " \n",
    "                    # 创建文件夹\n",
    "                    new_ws = start_dir_make(root, name.replace(file_flag, ''))\n",
    " \n",
    "                    # zip文件地址\n",
    "                    zip_path = os.path.join(root, name)\n",
    " \n",
    "                    # 解压\n",
    "                    flag = decompress(zip_path, new_ws)\n",
    " \n",
    "                    # 删除解压后的文件\n",
    "                    del_old_zip(zip_path)\n",
    " \n",
    "                    # 去掉多余的文件结构\n",
    "                    rem_dir_extra(root, name.replace(file_flag, ''))\n",
    " \n",
    "                    print(f'{root}\\\\{name}'.join(['文件：', '\\n解压完成\\n']))\n",
    " \n",
    " \n",
    "    # 由于解压可能解了好几次 所以可能会有已经解压好的父级目录重名无法处理 这里要再处理一次\n",
    "    rem_dir_extra(os.path.split(parent_path)[0], os.path.split(parent_path)[1])\n",
    " \n",
    " \n",
    "    print(\"解压完成\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
